<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>队列操作</title>
</head>
<body>
    <script>
        //封装队列
        function Queue() {
            this.items = [];
            //1、add元素到队列
            Queue.prototype.enqueue = function(ele){
                this.items.push(ele);
            }
            //查看前端元素
            Queue.prototype.front=function(){
                return this.items[0];
            }
            //2、从队列删除前端元素
            Queue.prototype.dequeue = function(){
                return this.items.shift();
            }
            //3、查看是否为空
            Queue.prototype.isEmpty = function(){
                return this.items.length == 0;
            }
            //4、查看元素个数
            Queue.prototype.size = function(){
                return this.items.length;
            }
            //5、tostring()
            Queue.prototype.tostring = function(){
                var str = ''
                for(var i=0;i<this.items.length;i++) {
                    str+=this.items[i]+'';
                }
                return str;
            }
        }

        var queue=new Queue()
        queue.enqueue('1232')
        queue.enqueue('asd')
        queue.enqueue('bbb')
        queue.enqueue('ccc')
        console.log(queue)
        queue.dequeue()
        console.log(queue)
        queue.dequeue()
        console.log(queue)
        console.log('front',queue.front())
        console.log('front',queue.size())

        /*
        击鼓传花
        */
        function passGame(namelist,num){
            //1、创建队列
            var queue =new Queue();
            //2、将所有人加入到队列
            for (var index = 0; index < namelist.length; index++) {
                queue.enqueue(namelist[index])
            }
            //3、开始数数字
            while (queue.size() > 1) {
                //不是num的时候重新加入队列的末尾
                //是num的时候将他从队列中删除
                //num数字之前的人要重新放入队列的末尾
                for(var i=0; i<num-1; i++) {
                    queue.enqueue(queue.dequeue())
                }
                //4、num对应的人直接队列中删除
                queue.dequeue();
            }
            //5、获取剩下的那个人
            console.log('剩余的人数',queue.size())
            var endname=queue.front()
            console.log('最终剩下的那个人',queue)
            return namelist.indexOf(endname)
        }
        var namearry=['张三','李四','王五','马六','朵儿']
        console.log('游戏开始:'+passGame(namearry,3))
    </script>
</body>
</html>